Ouroboros
Easy self-referential struct generation for Rust. Dual licensed under MIT / Apache 2.0.
While this crate is no_std
compatible, it still requires the alloc
crate.
Version notes:
- Version
0.16.0
fixes a potential soundness issue, but removes support for template parameters in the process. Lifetime parameters are still supported. As of 2023-06-13, the compiler is practically sound with 0.15 but this may stop being the case at any time and without warning. - Version
0.13.0
and later contain checks for additional situations which cause undefined behavior if not caught. - Version
0.11.0
and later place restrictions on derive macros, earlier versions allowed using them in ways which could lead to undefined behavior if not used properly. - Version
0.10.0
and later automatically box every field. This is done to prevent undefined behavior, but has the side effect of making the library easier to work with.
Tests are located in the examples/ folder because they need to be in a crate
outside of ouroboros
for the self_referencing
macro to work properly.
use self_referencing;